package zhengze;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Zhz
{
	public static void main(String[] args)
	{
		System.out.println("=======");
		/*正则表达式的两种写法*/
		//第一种是建立一个方法
		//传入参数进行比较
		System.out.println("===="+regex01("a","b"));
		/*第二种结构
		 *直接传入参数但是每次都要编译*/
		System.out.println("=="+Pattern.matches("q","q"));
		/*判定两个字符串是否相等*/
		System.out.println("=="+regex01("aa","aa"));
		/*字符
		 * \:转义；想要输入\就要输入两个\\
		 * \t 制表符
		 * \n 新行
		 * \r 回车符
		 * \f 换页符
		 * \a 报警
		 * \e 转义符
		 * */
		System.out.println("=字符=\t="+regex01("\t","	"));
		System.out.println("==字符类==");
		/*字符类
		 * [abc] a,b,或者c
		 * [^abc] 除了abc 以外的任何字符
		 * [a-zA-Z] a到z A到Z
		 * [a-d[m-p]]a到d 或者m到p
		 * [a-z&&[def]]d e或者f(交集)相交的部分
		 * [a-z&&[^bc]]除了 bc a-z其他的字符都可以
		 * 
		 * */
		System.out.println("==字符类=="+regex01("[abc]","d"));
		System.out.println("==字符类=="+regex01("[^abc]","d"));
		System.out.println("==字符类=="+regex01("[0-9]","4"));
		System.out.println("==字符类=="+regex01("[a-z&&[h-m]]","i"));
		System.out.println("==字符类=="+regex01("[a-z&&[^h-m]]","i"));
		System.out.println("==预定义字符类==");
		/* . 任何字符  要想匹配任何字符需要转义
		 *\d ：表示[0-9]
		 *\D ：表示[^0-9]
		 *\s 表示空白字符
		 *\S 表示非空白字符
		 *\w 单词字符[a-zA-Z_0-9]
		 *\W 非单词字符[^\w]
		 * */
		System.out.println("==预定义字符类=="+regex01(".","\\a"/*匹配字符需要转义*/));
		System.out.println("==预定义字符类=="+regex01("\\d","1"));
		System.out.println("==预定义字符类=="+regex01("\\D","1"));
		System.out.println("==预定义字符类=="+regex01("\\s","a"));
		System.out.println("==预定义字符类=="+regex01("\\S","a"));
		System.out.println("==预定义字符类=="+regex01("\\w","1"));
		System.out.println("==预定义字符类=="+regex01("\\W","~"));
		System.out.println("==Greedy 数量词==");
		/*x? 一次或一次都不执行
		 * x* 零次 或多次执行
		 * x+ 一次或执行多次
		 * x{n} 执行n次
		 * x{n,} 至少执行n次
		 * x{n,m} 至少执行n次但不能超过m次
		 * */
		System.out.println("==Greedy 数量词=a?="+regex01("[\\w]?","8"));
		System.out.println("==Greedy 数量词=a*="+regex01("[\\w]*",""));
		System.out.println("==Greedy 数量词=a+="+regex01("[\\w]+","12344"));
		System.out.println("==Greedy 数量词=a{n}="+regex01("[\\w]{3}","w"));
		System.out.println("==Greedy 数量词=a{n,}="+regex01("[\\w]{3,}","wwww"));
		System.out.println("==Greedy 数量词=a{n,m}="+regex01("[\\w]{3,5}","12345"));
	}
	/*正则表达式的第一种写法
	 * */
	private static boolean regex01(String fegex,String input)
	{
		/*正则表达式编译*/
		Pattern parretn =Pattern.compile(fegex);
		/*使用；
		 * 将指定的字符串验证一下按照规则来
		 * 参数：就是指定的字符串
		 * 返回值：是下一个匹配器
		 * */
		Matcher matcher =parretn.matcher(input);
		/*匹配器的结果
		 * true 表示匹配
		 * false 表示不匹配*/
		return matcher.matches();
	}
}
